// type 在 ts 中是对标 interface, 只不过有一些小区别(语法/用法)

// let dir: string = 'right' // dir 用于存储我们的四个方向, right | top | left | bottom
// dir = 'left'
// dir = 'top'
// dir = 'bottom'
// dir = 'right'
// dir = 'qwe_100'
// dir = 'asd_999'

// 使用 type 解决上述问题
type TDir = "right" | "top" | "left" | "bottom";
let dir: TDir = "right";
dir = "top";
// dir = "qwe_100" // 不能将类型 "'qwe_100'" 分配给类型 "TDir"

/**
 *  type 也可以完成 interface 的功能, 两者最大的区别就是 type 需要 =
 *
 *  一般在开发的时候, 我们如果是给对象添加类型校验我们会选择 interface
 *      type 一般更多的是给 字符串使用
 */

interface IObj1 {
    id: string;
    name: string;
}

type TObj2 = {
    // type 内部的属性可以用 换行/逗号/分号
    id: string;
    name: string;
};

const obj1: IObj1 = {
    id: "qf001",
    name: "张三",
};

const obj2: TObj2 = {
    id: "qf002",
    name: "李四",
};
